﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BusinessLayer.Interfaces;
using BusinessLayer.Implementacion;
using EntityLayer;

namespace proyGestionVisitas.Account
{
    public partial class Login : System.Web.UI.Page
    {
        private IFacadeLogin FacadeLogin;
        private String msg;

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (Request.QueryString["exit"] != null && Request.QueryString["exit"].ToString() == "1") { Session["usu"] = null; Response.Redirect("~/Account/Login.aspx", false); return; }
                if (Session["usu"] != null) { Response.Redirect("~/Default.aspx", false); return; }
            }
            catch (Exception ex)
            {
                MostrarComentario(ex, "Page_Load");
            }
            RegisterHyperLink.NavigateUrl = "Register.aspx?ReturnUrl=" + HttpUtility.UrlEncode(Request.QueryString["ReturnUrl"]);
        }

        protected void btnLogin_Click(object sender, EventArgs e)
        {
            if (!ValidarCampos()) return;
            Ingresar();
        }

        private Boolean ValidarCampos()
        {
            Boolean ok = true;
            try
            {
                if (txtUsuario.Text == String.Empty)
                {
                    ok = false;
                    msg = "Debe ingresar un nombre de usuario.";
                }
                else if (txtClave.Text == String.Empty)
                {
                    ok = false;
                    msg = "Debe ingresar una clave de usuario.";
                }
            }
            catch (Exception ex)
            {
                ok = false;
                MostrarComentario(ex, "ValidarCampos");
            }
            if (!ok && msg != String.Empty) MostrarComentario(msg);
            return ok;
        }

        private void Ingresar()
        {
            Boolean ok = true;
            msg = String.Empty;
            String usu = String.Empty, cla;
            try
            {
                usu = txtUsuario.Text.Trim();
                cla = txtClave.Text.Trim();
                FacadeLogin = new FacadeLogin();
                List<T_Usuario> listUsuario;
                listUsuario = new List<T_Usuario>();
                listUsuario = FacadeLogin.ValidarUsuario(usu, cla);
                if (listUsuario == null || listUsuario.Count() == 0)
                {
                    ok = false;
                    msg = "Usuario y/o Clave Incorrectos.";
                }
                else
                {
                    Session["co_usu"] = listUsuario[0].co_usuario;
                    Session["usu"] = usu;
                    Session["no_sector"] = listUsuario[0].no_sector;
                }
            }
            catch (Exception ex)
            {
                ok = false;
                MostrarComentario(ex, "Ingresar");
            }
            if (!ok && msg != String.Empty) MostrarComentario(msg);
            if (ok) { Response.Redirect("~/Default.aspx", false); return; }
        }

        private void MostrarComentario(String msg, String titulo = "Mensaje")
        {
            CargarComentario(msg, titulo);
        }

        private void MostrarComentario(Exception ex, String titulo)
        {
            if (ex != null) { msg = (ex.InnerException != null) ? ex.InnerException.Message : ex.Message; }
            CargarComentario(msg, titulo);
        }

        private void CargarComentario(string msg, String titulo)
        {
            lblmenOK.Text = msg;
            pcMensaje.HeaderText = titulo;
            pcMensaje.ShowOnPageLoad = true;
        }

    }
}
